/**HEADER********************************************************************
* 
* Copyright (c) 2008 Freescale Semiconductor;
* All Rights Reserved
*
*************************************************************************** 
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR 
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  
* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
**************************************************************************
*
* $FileName: lwgpio_mcf52277.h$
* $Version : 3.8.2.1$
* $Date    : Feb-13-2012$
*
* Comments:
*
*   The file contains definitions used in user program and/or in other
*   kernel modules to access GPIO pins
*
*END************************************************************************/
#ifndef __lwgpio_mcf52277_h__
#define __lwgpio_mcf52277_h__ 1

#define LWGPIO_PIN_VALID (0x80000000) /* Note: this is for backwards compatibility with GPIO driver only */

/* Pin field definitions */
#define LWGPIO_PIN_SHIFT (0)
#define LWGPIO_PIN_MASK  (0x7 << LWGPIO_PIN_SHIFT)

#define LWGPIO_PIN(x)    (((x) << LWGPIO_PIN_SHIFT) & LWGPIO_PIN_MASK)

/* Port field definitions */
#define LWGPIO_PORT_SHIFT    (3)
#define LWGPIO_PORT_MASK     (0xFF << LWGPIO_PORT_SHIFT)
#define LWGPIO_PORT(x)       (((x) << LWGPIO_PORT_SHIFT) & LWGPIO_PORT_MASK)
#define LWGPIO_PORT_BE       (LWGPIO_PORT(0) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_CS       (LWGPIO_PORT(1) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FBCTL    (LWGPIO_PORT(2) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_I2C      (LWGPIO_PORT(3) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_UART 	  (LWGPIO_PORT(5) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_DSPI     (LWGPIO_PORT(6) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_TIMER    (LWGPIO_PORT(7) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_LCDCTL   (LWGPIO_PORT(8) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_LCDDATAH (LWGPIO_PORT(9) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_LCDDATAM (LWGPIO_PORT(10) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_LCDDATAL (LWGPIO_PORT(11) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_PAR_IRQ  (LWGPIO_PORT(12) | LWGPIO_PIN_VALID)

#define LWGPIO_PIN0   (0)
#define LWGPIO_PIN1   (1)
#define LWGPIO_PIN2   (2)
#define LWGPIO_PIN3   (3)
#define LWGPIO_PIN4   (4)
#define LWGPIO_PIN5   (5)
#define LWGPIO_PIN6   (6)
#define LWGPIO_PIN7   (7)

typedef struct {
    uint_8  port_idx;
    uint_8  pinmask; /* since struct holds one pin, pinmask will have only one bit set */
    uint_32 flags;
} LWGPIO_STRUCT, _PTR_ LWGPIO_STRUCT_PTR;

#define LWGPIO_MUX_UART0_GPIO  (0)
#define LWGPIO_MUX_UART1_GPIO  (0)
#define LWGPIO_MUX_UART2_GPIO  (0)
#define LWGPIO_MUX_UART3_GPIO  (0)
#define LWGPIO_MUX_UART4_GPIO  (0)
#define LWGPIO_MUX_UART5_GPIO  (0)
#define LWGPIO_MUX_UART6_GPIO  (0)
#define LWGPIO_MUX_UART7_GPIO  (0)

#define LWGPIO_MUX_LCDDATAM0_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM1_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM2_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM3_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM4_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM5_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM6_GPIO  (0)
#define LWGPIO_MUX_LCDDATAM7_GPIO  (0)

#define LWGPIO_MUX_LCDDATAL0_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL1_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL2_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL3_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL4_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL5_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL6_GPIO  (0)
#define LWGPIO_MUX_LCDDATAL7_GPIO  (0)

#define LWGPIO_MUX_BE0_GPIO  (0)
#define LWGPIO_MUX_BE1_GPIO  (0)
#define LWGPIO_MUX_BE2_GPIO  (0)
#define LWGPIO_MUX_BE3_GPIO  (0)

#define LWGPIO_MUX_CS0_GPIO  (0)
#define LWGPIO_MUX_CS1_GPIO  (0)
#define LWGPIO_MUX_CS2_GPIO  (0)
#define LWGPIO_MUX_CS3_GPIO  (0)

#define LWGPIO_MUX_FBCTL0_GPIO  (0)
#define LWGPIO_MUX_FBCTL1_GPIO  (0)
#define LWGPIO_MUX_FBCTL2_GPIO  (0)
#define LWGPIO_MUX_FBCTL3_GPIO  (0)

#define LWGPIO_MUX_DSPI0_GPIO  (0)
#define LWGPIO_MUX_DSPI1_GPIO  (0)
#define LWGPIO_MUX_DSPI2_GPIO  (0)
#define LWGPIO_MUX_DSPI3_GPIO  (0)

#define LWGPIO_MUX_TIMER0_GPIO  (0)
#define LWGPIO_MUX_TIMER1_GPIO  (0)
#define LWGPIO_MUX_TIMER2_GPIO  (0)
#define LWGPIO_MUX_TIMER3_GPIO  (0)

#define LWGPIO_MUX_LCDCTL0_GPIO  (0)
#define LWGPIO_MUX_LCDCTL1_GPIO  (0)
#define LWGPIO_MUX_LCDCTL2_GPIO  (0)
#define LWGPIO_MUX_LCDCTL3_GPIO  (0)

#define LWGPIO_MUX_I2C0_GPIO  (0)
#define LWGPIO_MUX_I2C1_GPIO  (0)

#define LWGPIO_MUX_LCDDATAH0_GPIO  (0)
#define LWGPIO_MUX_LCDDATAH1_GPIO  (0)

#define LWGPIO_MUX_PAR_IRQ0_GPIO  (0)
#define LWGPIO_MUX_PAR_IRQ1_GPIO  (0)
#define LWGPIO_MUX_PAR_IRQ2_GPIO  (0)
#define LWGPIO_MUX_PAR_IRQ3_GPIO  (0)

#endif
